<?php


namespace core\service;


use support\Redis;

/**
 * 通用排序
 * Class RankService
 * @package core\service
 */
class RankService
{
    /**
     * 加排序
     * @param $key
     * @param $value
     * @param int $point 分数
     */
    static function add($key, $value, $point = 1)
    {
        Redis::zIncrBy($key, $point, $value);
    }

    /**
     * 返回按照评分从大到小的前N个数据
     * @param $key
     * @param $length
     * @param array $default
     * @return array|mixed
     */
    static function sortDesc($key, $length, $default = [])
    {
        $res = Redis::zRevRange($key, 0, $length - 1);
        if ($res) {
            return $res;
        }
        return $default;
    }

    /**
     * 返回按照评分从小到大的前N个数据
     * @param $key
     * @param $length
     * @param array $default
     * @return array|mixed
     */
    static function sortAsc($key, $length, $default = [])
    {
        $res = Redis::zRange($key, 0, $length - 1);
        if ($res) {
            return $res;
        }
        return $default;
    }
}